package main

import (
	"fmt"
)

// 类型断言的两种情况 x.(T)
// T 是一个具体类型
// T 是另外一个接口类型

type Fly interface {
	Fly()
}

type Run interface {
	Run()
}

type Anim interface {
	Fly
	Run
}

type Bird struct {
	Speed int
}
func (b Bird) Fly() {
	fmt.Println(b.Speed)
}
func (b Bird) Run() {
	fmt.Println(b.Speed)
}

func main() {
	var fly Fly
	// fly.Fly() // panic

	// 这里传入的具体类型 需要看具体类型中 关于 fly 的定义
	fly = Bird{}
	fly.Fly()

	// 第一种情况
	fly2 := fly.(Bird)
	fmt.Println(fly2.Speed)

}
